package org.jjche.common.transformer;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jjche.common.annotation.transform.TransformFK;
import org.springframework.lang.NonNull;


/**
 * 外键转换
 * 注意需要自行实现接口后（名字必须是ForeignKeyTransformer）并注入spring容器才能正常使用
 *
 * @author R
 */
public interface IForeignKeyTransformer<T> extends ITransformer<T, TransformFK> {
    /**
     * 转换
     *
     * @param originalValue 转换之前的原始值
     * @param transformFk   注解
     * @return 转换后的值
     */
    @Override
    default String transform(@NonNull T originalValue, TransformFK transformFk) {
        return transform(originalValue, transformFk.mapper(), transformFk.to());
    }

    /**
     * 转换
     *
     * @param originalValue 原始值
     * @return 转换后的值
     */
    String transform(@NonNull T originalValue, Class<? extends BaseMapper<?>> clazz, String to);
}
